package cn.tedu.sims.service;

import cn.tedu.sims.pojo.dto.UserLoginByEmailDTO;
import cn.tedu.sims.pojo.dto.UserLoginByPhoneDTO;
import cn.tedu.sims.pojo.dto.UserLoginDTO;
import cn.tedu.sims.pojo.dto.UserRegDTO;
import cn.tedu.sims.pojo.vo.LocationListItemVO;
import cn.tedu.sims.pojo.vo.UserLoginByUserNameAndRoleVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface UserService {
    /**
     * 注册用户
     * @param userRegDTO
     */
    void insert(UserRegDTO userRegDTO);

    /**
     * 登陆
     * @param userLoginDTO
     */
    String login(UserLoginDTO userLoginDTO);

    /**
     * 邮箱登陆
     * @param userLoginByEmailDTO
     */
    String loginByEmail(UserLoginByEmailDTO userLoginByEmailDTO);

    /**
     * 手机号登陆
     * @param userLoginByPhoneDTO
     */
    String loginByPhone(UserLoginByPhoneDTO userLoginByPhoneDTO);

    /**
     * 发送邮箱
     * @param email
     */
    void sendEmail(String email);


    /**
     * 发送手机号验证码
     * @param phone
     */
    void senPhone(Long phone);

    /**
     * 根据手机号查询用户名和角色
     * @param phone
     * @return
     */
    UserLoginByUserNameAndRoleVO selectByPhone(Long phone);

    /**
     * 根据邮箱查询用户名和角色
     * @param email
     * @return
     */
    UserLoginByUserNameAndRoleVO selectByEmail(String email);

    /**
     * 根据用户名查询用户名和角色
     * @param username
     * @return
     */
    UserLoginByUserNameAndRoleVO selectByUserName(String username);

    /**
     * 查询地区
     * @return
     */
    List<LocationListItemVO> selectByRegion();
}
